package edu.pucsp.predatorprey.tela.observer;

import java.util.ArrayList;
import java.util.List;

import edu.pucsp.predatorprey.tela.util.CicloDeVida;

public abstract class Observavel {

	private final List<Observador> observadores;

	public Observavel() {
		this.observadores = new ArrayList<Observador>();
	}

	public void adicionarObservador(Observador observador) {
		if (observador == null) {
			throw new IllegalArgumentException("Observador n�o pode ser nulo");
		}
		this.observadores.add(observador);
	}

	public synchronized void notificarObservadores(CicloDeVida cicloDeVida) {
		for (Observador obs : this.observadores) {
			obs.atualizar(cicloDeVida);
		}
	}
}
